<?php
	class Tecnico extends Model {
		public static $_id_column = 'idTecnico';
		
		public function usuario() {
        	return $this->belongs_to('usuario','idUsuario');
    	}
		
		public function estadoTecnico() {
        	return $this->belongs_to('estadotecnico','idEstadoTecnico');
    	}
		
		public static function listar(){
			return Model::factory('tecnico')->find_many();
		}
		
		public static function listarPorEmpresa($idEmpresa,$idsTecnicosExcluidos){
			if(count($idsTecnicosExcluidos)>0){
				return Model::factory('tecnico')->where('idEmpresa', $idEmpresa)->where('borrado', 0)
				->where_not_in('idTecnico', $idsTecnicosExcluidos)->find_many();	
			}else{
				return Model::factory('tecnico')->where('idEmpresa', $idEmpresa)->where('borrado', 0)->find_many();	
			}
		}
		
		public static function getCantPorEmpresa($idEmpresa,$idsTecnicosExcluidos){
			if(count($idsTecnicosExcluidos)>0){
				return Model::factory('tecnico')->where('idEmpresa', $idEmpresa)->where('borrado', 0)
				->where_not_in('idTecnico', $idsTecnicosExcluidos)->count();	
			}else{
				return Model::factory('tecnico')->where('idEmpresa', $idEmpresa)->where('borrado', 0)->count();	
			}
		}
		
		public static function getCantRows($idEmpresa){
			return Model::factory('tecnico')->where('idEmpresa', $idEmpresa)->where('borrado', 0)->count();
		}
		
		public static function listarInicioFin($idEmpresa,$inicio,$fin){
			return Model::factory('tecnico')->where('idEmpresa', $idEmpresa)->where('borrado', 0)
			->order_by_desc('idTecnico')->limit($fin)->offset($inicio)->find_many();
		}
		
		public static function listarTecnicoPorEstado($idEmpresa,$idEstadoTecnico){
			return Model::factory('tecnico')->where('idEmpresa', $idEmpresa)->where('idEstadoTecnico', $idEstadoTecnico)
			->where('borrado', 0)->find_many();
		}
		
		public static function listarTecnicoPorTiempoOcupacionMayor($idEmpresa,$tiempoTarea,$tiempoLimiteInferior,$fecha){
			$tecnicos = Model::factory('tecnico')->where('idEmpresa', $idEmpresa)->where('borrado', 0)->find_many();
			$tecnicosOcupados=  array();
			$i = 0;
			foreach($tecnicos as $tec){
				$tiempoTareas = Tarea::getTiempoTareasPorTecnico($tec->idTecnico,$fecha);
				if($tiempoTareas + $tiempoTarea > $tiempoLimiteInferior){
					$tecnicosOcupados[$i] = $tec;
					$i++;
				}
			}
			return $tecnicosOcupados;
		}

		public static function listarTecnicoConTareaAsignadaPendiente($idEmpresa){
			$tecnicos = Model::factory('tecnico')->where('idEmpresa', $idEmpresa)->where('borrado', 0)->find_many();
			$tecnicosOcupados=  array();
			$i = 0;
			$estados = array(2,4);
			foreach($tecnicos as $tec){
				$cantTareas = Tarea::getCantTareasPorTecnicoEstadoTarea($tec->idTecnico, $estados);
				if($cantTareas > 0){
					$tecnicosOcupados[$i] = $tec;
					$i++;
				}
			}
			return $tecnicosOcupados;
		}
		
		public static function buscarTecnico($idTecnico){
			return Model::factory('tecnico')->where('idTecnico', $idTecnico)->where('borrado', 0)->find_one();
		}
		
		public static function buscarTecnicoPorUserPass($user,$pass){
			$usuario = Usuario::buscarUsuarioPorNombrePass($user, $pass);
			if($usuario!=false){
				$idUsuario = $usuario->idUsuario;
				return Model::factory('tecnico')->where('idUsuario', $idUsuario)->find_one();
			}else{
				return false;
			}
		}
		
		public static function actualizarPosicion($idTecnico,$latitud,$longitud){
			$tecnico = Model::factory('tecnico')->where('idTecnico', $idTecnico)->find_one();
			$tecnico->latitud = $latitud;
			$tecnico->longitud = $longitud;
			$tecnico->save();
			return true;
		}
		
		public static function borrarTecnico($idTecnico){
			$tecnico = Model::factory('tecnico')->where('idTecnico', $idTecnico)->find_one();
			$tecnico->borrado = 1;
			$tecnico->idUsuario = null;
			$tecnico->save();
		}

	}

?>